Formal Verification of a Lazy Concurrent List-Based Set Algorithm
نویسندگان
چکیده
We describe a formal verification of a recent concurrent list-based set algorithm due to Heller et al. The algorithm is optimistic: the add and remove operations traverse the list without locking, and lock only the nodes affected by the operation; the contains operation uses no locks and is wait-free. These properties make the algorithm challenging to prove correct, much more so than simple coarse-grained locking algorithms. We have proved that the algorithm is linearisable, using simulation between input/output automata modelling the behaviour of an abstract set and the implementation. The automata and simulation proof obligations are specified and verified using PVS.
منابع مشابه
A Lazy Concurrent List-Based Set Algorithm
List-based implementations of sets are a fundamental building block of many concurrent algorithms. A skiplist based on the lock-free list-based set algorithm of Michael will be included in the Java Concurrency Package of JDK 1.6.0. However, Michael’s lock-free algorithm has several drawbacks, most notably that it requires all list traversal operations, including membership tests, to perform cle...
متن کاملModel Checking of Linearizability of Concurrent List Implementations
Concurrent data structures with fine-grained synchronization are notoriously difficult to implement correctly. The difficulty of reasoning about these implementations does not stem from the number of variables or the program size, but rather from the large number of possible interleavings. These implementations are therefore prime candidates for model checking. We introduce an algorithm for ver...
متن کاملProving Correctness of Concurrent Objects by Validating Linearization Points
In the recent years, several concurrent data-structures/objects have been proposed. These data-structures allow multiple threads/process to operate on them concurrently while maintaining consistency. By allowing multiple threads to operate on them simultaneously, these structures strive to increase parallelism. These structures typically involve the operating threads applying different fine-gra...
متن کاملA Concurrency-Optimal List-Based Set
Designing a highly concurrent data structure is an important challenge that is not easy to meet. As we show in this paper, even for a data structure as simple as a linked list used to implement the set type, the most efficient algorithms known so far may reject correct concurrent schedules. We propose a new algorithm based on a versioned try-lock that we show to achieve optimal concurrency: it ...
متن کاملOn Developing Optimistic Transactional Lazy Set
Transactional data structures with the same performance of highly concurrent data structures enable performance-competitive transactional applications. Although Software Transactional Memory (STM) is a promising technology for designing and implementing transactional applications, STM-based transactional data structures still perform inferior to their optimized, concurrent (i.e. non-transaction...
متن کامل